/*!
 * \file MediaStateMap.h
 * \brief State map media generator in Media Gateway
 */

#ifndef MGW_MEDIA_STATE_MAP_H
#define MGW_MEDIA_STATE_MAP_H

#include "MediaStateWaitingForMediaConnection.h"
#include "MediaStateEstablished.h"

namespace tsc
{
namespace mgw
{

/**
 * State map for media transmission generator in Media Gateway
 */
class MediaStateMap
{
public:

	/**
	 * Returns singleton instance of the map
	 * \return an instance of the state map
	 */
	static MediaStateMap& instance();

	common::StateBase* initialState() const;

	static MediaStateWaitingForMediaConnection* mpStateWaitingForMediaConnection;
	static MediaStateEstablished*               mpStateEstablished;

private:

	MediaStateMap();

	virtual ~MediaStateMap();

};

} // namespace mgw
} // namespace tsc

#endif // MGW_MEDIA_STATE_MAP_H
